package com.zhilei.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhilei.mapper.AdminMapper;
import com.zhilei.pojo.Admin;
import com.zhilei.pojo.bo.AdminBO;
import com.zhilei.service.AdminService;
import com.zhilei.untils.MD5Utils;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 慕聘网运营管理系统的admin账户表，仅登录，不提供注册 服务实现类
 * </p>
 *
 * @author 志磊
 * @since 2024-09-08
 */
@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService {

    /**
     * 传入用户对象，判断用户是否存在
     *
     * @param adminBO
     * @return
     */
    @Override
    public boolean adminLogin(AdminBO adminBO) {

        // TODO 查询该用户名的 admin 信息
        Admin admin = adminInfo(adminBO.getUsername());

        // TODO 如果 admin 为空，返回 false
        if (admin == null) {
            return false;
        } else {
            // TODO 获取用户的密码 ---> 加密之后的数据
            String dbPassword = admin.getPassword();

            // TODO 获取盐值
            String dbSlat = admin.getSlat();

            // TODO 获取传入的密码
            String adminBOPassword = adminBO.getPassword();

            // TODO 对传入的密码进行加密
            String adminBOPasswordEncrypted = MD5Utils.encrypt(adminBOPassword, dbSlat);

            // TODO 如果数据库中的密码和传入的密码加密后的数据不等，返回 false
            return dbPassword.equalsIgnoreCase(adminBOPasswordEncrypted);
        }
    }

    /**
     * 查询并返回用户信息
     *
     * @param adminBO
     * @return
     */
    @Override
    public Admin getAdminInfo(AdminBO adminBO) {

        return adminInfo(adminBO.getUsername());

    }

    /**
     * 封装查询用户的方法
     *
     * @param username
     * @return
     */
    private Admin adminInfo(String username) {

        return baseMapper.selectOne(new QueryWrapper<Admin>().eq("username", username));
    }
}
